285. BigQuery 省錢大作戰

WHY

又來玩新東西了,這次是BigQuery。

Note

BigQuery的費用計算方式,儲存空間+分析。

ref. 以量計價的運算價格

注意事項

  1. 避免反覆覆蓋表: 系統會在時間旅行和故障安全窗口期間保留被替換的資料。如果您經常覆蓋表,則會產生額外的儲存空間費用。
  2. 使用下列方式探索或預覽資料
    • 在 Google Cloud 控制台的資料表詳細資料頁面中,按一下「Preview」(預覽) 分頁標籤,即可取樣資料。
    • 在 bq 指令列工具中,使用 bq head 指令並指定要預覽的資料列數。
    • 在 API 中,使用 tabledata.list 從一組指定的資料列擷取資料表資料。
    • 請避免在非叢集資料表中使用 LIMIT。如果是未經叢集的資料表,LIMIT 子句不會降低運算費用。
  3. 建立叢集資料表:在每個修改資料表的作業中,叢集資料表都會保留其排序屬性。依叢集化資料欄篩選或匯總的查詢,只會根據叢集化資料欄掃描相關區塊,而不會掃描整個資料表或資料表分區。感覺上像是index
  4. 使用分區將大型資料表分割:分區資料表劃分為多個區段 (稱為分區),可讓您更容易管理和查詢資料。將大型資料表分成較小的分區,可以提高查詢效能,並且可以透過減少查詢讀取的位元組數來控制費用。
  5. 使用長期儲存價格,降低舊資料的費用:超過90天沒用過的資料,會降低50%的金額儲存空間定價
  6. 為目的地資料表使用資料表到期時間:如果您將大型查詢結果寫入目的地資料表,請使用預設資料表到期時間,等到您不再需要這些資料時,系統便會依照設定的時間來刪除資料
  7. 寫入資料方式:批次不用錢,串流需要。
    285-fig.1.png
    選擇哪一種方式,參考下圖
    285-fig.2.png
    ref. BigQuery Storage Write API